//package com.example.demo.controller;
//
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.*;
//import org.springframework.stereotype.Component;
//
//@Aspect // 定义切面
//@Component
//public class UserAspect {
//    // 切点 (配置拦截规则)
//    @Pointcut("execution(* com.example.demo.controller.UserController.*(..))")
//    public void pointcut() {
//        // 这是一个空方法, 不需要有具体的实现
//    }
//
//    @Before("pointcut()")
//    public void doBefore(){
//        System.out.println("执行 Before 方法");
//    }
//
//    @After("pointcut()")
//    public void doAfter(){
//        System.out.println("执行 After 方法");
//    }
//
//    @AfterReturning("pointcut()")
//    public void doAfterReturning() {
//        System.out.println("执行 AfterReturning 方法");
//    }
//
//    @AfterThrowing("pointcut()")
//    public void doAfterThrowing() {
//        System.out.println("执行 AfterThrowing 方法");
//    }
//
//    @Around("pointcut()")
//    public Object doAround(ProceedingJoinPoint joinPoint) {
//        Object object = null;
//        System.out.println("Around 方法开始执行");
//        try {
//            // 执行拦截方法
//            object = joinPoint.proceed();
//        } catch (Throwable throwable) {
//            throwable.printStackTrace();
//        }
//        System.out.println("Around 方法结束执行");
//        return object;
//    }
//}
